package org.longteng.mobileluck.orc;

import lombok.extern.slf4j.Slf4j;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;

/**
 * 识别图片上的数字, 用不起来
 * @author hymn.com
 */
@Slf4j
public class ImageParse {

    /**
     * 读取图片的数字信息
     * @param path
     * @return
     */
    public static int[][] readPic(String path){
        int[][] img = null;
        // 这里我们就需要涉及到去拿去所有的数据  rgb  信息，有一个图片  IO  流
        try (InputStream imgStream = new FileInputStream(new File(path));) {
            BufferedImage image = ImageIO.read(imgStream);
            // 获取这个图片的宽和高
            int width = image.getWidth();
            int height = image.getHeight();
            // 创建一个当前图的最大宽高的二维数组
            img = new int[height][width];
            // 到这里我们就该去把每个点位赋值
            for (int i = 0; i < height; i++) {
                for (int j = 0; j < width; j++) {
                    int rgb = image.getRGB(j, i); // 此时这是一个二进制颜色代码
                    // 条件判断颜色转为 RGB ，例如（255，0，0）
                    int r = (rgb & 0x00ff0000) >> 16;
                    int g = (rgb & 0x0000ff00) >> 8;
                    int b = (rgb & 0x000000ff);
                    int a = 0xff / 2;
                    if (r > a && g > a && b > a) {
                        img[i][j] = 0;
                    } else {
                        img[i][j] = 1;
                    }
                }
            }

        }catch (IOException e) {
            log.error("读取图片数据异常。", e);
        }
        return img;
    }

    /**
     * 返回图片中文件信息2进制
     * @param bits
     */
    public static void  parseUTF(int[] bits){
        int index = 0;
        int count = 0;
        for(int j = 0; j<bits.length; j++){
            if(bits[j] == 1){
                count++;
                index++;
            }else {
                index++;
                String str = "";
                if(count == 0){
                    for(int k=1; k<=7; k++){
                        str += bits[index++];
                    }
                }else {
                    for(int x = 0; x<8-(count+1);x++){
                        str += bits[index++];
                    }

                    for(int y = 0; y<count-1; y++){
                        index+=2;
                        for(int z = 0; z<6; z++){
                            str += bits[index++];
                        }
                    }
                }
                count = 0;
                log.debug("图片读出的信息：{}", str);  // (char)Integer.parseInt(str,2)
                str="";
            }
            j = index;
        }
    }

}
